package main

// "math"
// "unsafe"
// "github.com/shopspring/decimal"

func main() {
	// var num int              // 默认为系统位数32或64位,不赋值则默认值为0
	// var num8 int8 = -100
	// var unum8 uint8 = 100
	// fmt.Println(num, num8, unum8)
	// fmt.Println(unsafe.Sizeof(num), unsafe.Sizeof(num8), unsafe.Sizeof(unum8))
	// var num int = 16
	// fmt.Printf("%v,%d,%b,%o,%x", num, num, num, num, num)
	// var num float32 = 0.9999996
	// fmt.Printf("%f\n", num)
	// fmt.Println(math.MaxFloat32)
	// fmt.Println(unsafe.Sizeof(num))
	// var f1 = 3.14e2
	// var f2 = 3.14e-2
	// fmt.Println(f1, f2)
	// d := 1129.6
	// fmt.Println((d*100))	//　输出112959.99999999999

	// 精度丢失
	// var m1 float64 = 3.1
	// var m2 float64 = 4.2
	// d := decimal.NewFromFloat(m1).Add(decimal.NewFromFloat(m2))
	// fmt.Println(d)		//  输出4.3999999999999995

	// 布尔型
	// var flag bool = true
	// var flag_default bool
	// fmt.Printf("%v--%T\n", flag, flag)                  // true--bool
	// fmt.Printf("%v--%T\n", flag_default, flag_default)  // false--bool

	// 字符串类型
	// var str1 string
	// var str2 string = "你好golang"
	// str3 := "你好golang"
	// fmt.Printf("%v -- %T\n%v -- %T\n", str1, str1, str2, str2)
	// fmt.Printf("%v -- %T\n", str3, str3)

	// 一次定义多行字符
	// 	str1 := `this is string
	// this is string
	// this is string
	// this is string`
	// 	fmt.Println(str1)

	// str1 := "i am a"
	// str2 := "teacher"
	// fmt.Println(str1+" "+str2)   // 加号拼接
	// str3 := fmt.Sprintf("%v %v", str1, str2) // Sprintf返回打印值拼接
	// arr := []string{str1, str2}
	// str4 := strings.Join(arr, " ")
	// fmt.Println(str3)
	// fmt.Println(str4)

	//字符串的常用操作
	// var str1 = "Are you ok?"
	// var str2 = "I am fine, thanks~"
	// var str_ch = "你好吗"
	// fmt.Println(len(str1))					// 求长度
	// fmt.Println(len(str_ch))

	// str3 := str1+" "+str2					// 拼接字符串
	// str4 := fmt.Sprintf("%v %v", str1, str2)
	// fmt.Println(str3)
	// fmt.Println(str4)

	// str1 := "I am a teacher"
	// arr := strings.Split(str1, " ")
	// fmt.Printf("%v -- %T", arr, arr)

	// str1 = strings.Join(arr, "*")			// 拼接字符串
	// fmt.Println(str1)

	// str1 := "this is my onion"				// 包含子串
	// str2 := "is"
	// flag := strings.Contains(str1, str2)    // str1中是否包含str2
	// fmt.Println(flag)

	// str1 := "this is my onion"
	// str2 := "this"
	// flag := strings.HasPrefix(str1, str2)	// str1是否包含前缀str2
	// fmt.Println(flag)
	// flag = strings.HasSuffix(str1, str2)	// str1是否包含后缀str2
	// fmt.Println(flag)

	// str1 := "this is my house"
	// str2 := "is"
	// i1 := strings.Index(str1, str2)
	// i2 := strings.LastIndex(str1, str2)
	// i3 := strings.Index(str1, "bp")
	// fmt.Println(i1, i2, i3)       // 2, 5, -1

	// str1 := "I am a teacher"
	// str2 := "为人师表"
	// fmt.Println(len(str1), len(str2))
	// fmt.Printf("%v", str2)
}
